博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python--django模板(model)
阅读量:6982 次
发布时间:2019-06-27

本文共 3019 字,大约阅读时间需要 10 分钟。

 

 

 

1.模板中的模型介绍

    模型是数据唯一的、权威的信息源。它包含所储存数据的必要字段和行为。通常,每个模型对应数据库中唯一的一张表。

  • 每个模型都是django.db.models.Model 的一个Python 子类。
  • 模型的每个属性都表示为数据库中的一个字段。
  • Django 提供一套自动生成的用于数据库访问的API

例如:

定义一个Book模型,具有id title pubDate这三个属性。

from django.db import modelsclass Book(models.Model):    id=models.AutoField(primary_key=True)    title=models.CharField(max_length=32)    pubDate=models.DateField()

 

id title pubDate是模型的三个字段,每个字符都被指定成一个类属性,每个属性映射到一个数据库的列。

通过logging可以查看翻译成的sql语句

 

2.映射关系如下:

     表名  <-------> 类名       字段  <-------> 属性    表记录 <------->类实例对象

3.数据库配置

  • django默认支持sqlite,mysql, oracle,postgresql数据库
  • django默认使用sqlite的数据库,默认自带sqlite的数据库驱动 , 引擎名称:django.db.backends.sqlite3
  • 引擎名称:django.db.backends.mysql

setting

在django的项目中会默认使用sqlite数据库,在settings里有如下设置:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.sqlite3',        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),    }}

如果想要更改为MySQL数据库,需要修改如下:

DATABASES = {    'default': {        'ENGINE': 'django.db.backends.mysql',        'NAME': 'books',    #你的数据库名称        'USER': 'root',   #你的数据库用户名        'PASSWORD': '', #你的数据库密码        'HOST': '', #你的数据库主机,留空默认为localhost        'PORT': '3306', #你的数据库端口    }}

【注意】

  • NAME即数据库的名字,在mysql连接前该数据库必须已经创建,而上面的sqlite数据库下的db.sqlite3则是项目自动创建
  • USER和PASSWORD分别是数据库的用户名和密码。
  • 设置完后,再启动我们的Django项目前,我们需要激活我们的mysql。
  • 然后,启动项目,会报错:no module named MySQLdb
  • 这是因为django默认你导入的驱动是MySQLdb,可是MySQLdb对于py3有很大问题,所以我们需要的驱动是PyMySQL
  • 所以,我们只需要找到项目名文件下的__init__,在里面写入:
import pymysqlpymysql.install_as_MySQLdb()

4.创建数据库

4.1 在Terminal中执行以下命令

python manage.py makemigrations

这条命令会模板在migrations中生成0001_initial.py这个文件,这个文件中存的就是用来生成表的数据。

4.2.再次执行一个命令生成表

python manage.py migrate

这样就会生成一个叫app01_book的表

如果执行完上边两个命令,数据库中的表依然不存在的话,需要检查,项目中的settings文件中应用是否加入到

ALLED_APPS 这个列表中

5.数据库的操作 

 5.1查询

def index(request):    # 查询所有的书籍    booklist=models.Book.objects.all()  # 返回值QuerySet    [obj1,obj2....]    return render(request,"index.html",{
"bookList":booklist}) #将所有书籍渲染到首页中。 #前边的bookList是 index.html中的变量名称,后边这个值就是上面的书籍对象。

index.html中的内容:

{% for book_obj in bookList %}                                            {
{ forloop.counter }} {
{ book_obj.title }} {
{ book_obj.pubDate|date:"Y-m-d" }} {
{ book_obj.price }} {
{ book_obj.publish }} {% endfor %}

5.2.增加

def add(request):    if request.method=="POST":        print(request.POST)        title=request.POST.get("title")        pubdate=request.POST.get("pubdate")        price=request.POST.get("price")        publish=request.POST.get("publish")        # 插入数据        models.Book.objects.create(title=title,pubDate=pubdate,price=price,publish=publish)        return redirect("/index/")    return render(request,"add.html")

5.3删除

def delBook(request,id):    models.Book.objects.filter(id=id).delete()    return redirect("/index/")

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/yxwang/p/7823122.html

你可能感兴趣的文章
《Windows Server 2012 Hyper-V虚拟化管理实践》——3.2 Hyper-V主机日常管理
查看>>
《C语言编程魔法书:基于C11标准》——第一篇 预备知识篇 第1章 C魔法概览1.1 例说编程语言...
查看>>
《IPv6安全》——1.7 推荐读物和资料
查看>>
《实施Cisco统一通信管理器(CIPT2)》一1.2 概述部署多站点环境时将会遇到的挑战...
查看>>
《Photoshop Lab修色圣典(修订版)》—第1课深入讨论
查看>>
Chromium 操作系统即将支持所有 SBC 单板电脑
查看>>
《CCNP安全Secure 642-637认证考试指南》——第8章 配置与实施路由式数据面安全...
查看>>
Remix OS PC 版面向全球开放
查看>>
Debian GNU/Linux 9 将切换至 GCC6 编译器
查看>>
《VMware 网络技术:原理与实践》—— 3.2 以太网
查看>>
《程序员的修炼——从优秀到卓越》一一1.6 勿以专家自居
查看>>
《Adobe Illustrator CS5中文版经典教程》—第0课0.5节使用绘图模式
查看>>
AngularJS 的自定义指令
查看>>
《CCNA ICND2(200-101)认证考试指南(第4版)》——第1章定义生成树协议
查看>>
什么样的 RPC 才是好用的 RPC
查看>>
《Adobe Premiere Pro CC经典教程》——14.6 特殊颜色效果
查看>>
Debian 项目不再提供 CD 格式的 ISO 镜像
查看>>
《设计团队协作权威指南》—第1章1.3节甘为螺丝钉
查看>>
Mozilla 将 Firefox 的命运与 Rust 语言捆绑在一起
查看>>
android 屏幕保持唤醒 不锁屏 android.permission.WAKE_LOCK
查看>>